Mobile electronic devices, such as a mobile phones and tablet computers, are capable of performing a wide variety of functions. One function is the streaming content—often over a cellular interface or a packet-switched interface—for the consumption of the content by the user of the electronic device. A typical type of content that is streamed is video content, which may be displayed on the display of the electronic device while corresponding audio is output via a speaker, earbuds, or a headset.
Streaming content to electronic devices is conventionally carried out in a relatively non-intelligent manner. For instance, in one conventional technique, the electronic device selects delivery attributes depending on historical bit rates. In this technique the device requests content at, for example, a certain bitrate and/or quality of stream. The quality of a stream is sometimes referred to by the format of the content or the corresponding codec used in the playback of the content (e.g., video formats include 1080 p, 720 p, 480 p, etc.).
The device continues to request content with the selected delivery attributes until historical statistics for data rate reception indicate that a change should be made (e.g., poor data rate reception indicates that a lower quality stream should be requested and good data rate reception indicates that a higher quality stream should be requested). In this approach, if the network becomes congested, there is typically a period of time during which data cannot be delivered to support the requested delivery attributes. The device may react to the change in network performance by requesting a lower quality data stream, but not before the device's buffer becomes depleted and the consumption of the content is interrupted or becomes laggy in behavior.